// Map gradient class to its primary color const gradientPrimaryColors = { "bg-gradient-blue": "#113253", "bg-gradient-purple": "#6365B5", "bg-gradient-green": "#1781C3", "bg-gradient-orange": "#FF9800", "bg-gradient-dark-purple": "#380F59", "bg-gradient-teal": "#4facfe", "bg-gradient-indigo": "#490552", "bg-gradient-cyan": "#74b9ff" }; // After your cards are rendered in the DOM: function setButtonTextColor() { document.querySelectorAll('.new-digi-card').forEach(card => { let btn = card.querySelector('.new-digi-card-btn'); if (!btn) return; let found = Object.entries(gradientPrimaryColors).find(([cls]) => card.classList.contains(cls)); if (found) { btn.style.setProperty('color', found[1], 'important'); } else { btn.style.setProperty('color', '#105df6', 'important'); // fallback color } }); } // Call this after rendering cards // Load education data from assets async function loadEducationData() { try { await new Promise(resolve => setTimeout(resolve, 1200)); // Optional delay const response = await fetch('assets/landing/university_data.json'); if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } const data = await response.json(); return data; } catch (error) { console.error('Error loading data:', error); throw error; } } // Create individual card HTML function createCard(data) { return `
${data.title} ${data.year ? ` - ${data.year}` : ''}

${data.subTitle}

`; } // Render cards into Owl Carousel function renderCards(data, containerId) { const container = document.getElementById(containerId); const loadingElement = document.getElementById('loading'); const errorElement = document.getElementById('error'); try { if (!container) { throw new Error(`Container with ID "${containerId}" not found`); } loadingElement.style.display = 'none'; const cardsHTML = data.map(item => `
${createCard(item)}
`).join(''); container.innerHTML = cardsHTML; // Destroy previous carousel if re-rendering if ($(container).hasClass('owl-loaded')) { $(container).trigger('destroy.owl.carousel').removeClass('owl-loaded'); container.innerHTML = cardsHTML; // Reset } // Initialize Owl Carousel $(container).owlCarousel({ loop: true, margin: 10, nav: true, dots: true, autoplay: true, autoplayTimeout: 3000, autoplayHoverPause: true, responsive: { 0: { items: 1 }, 350: { items: 1.17 }, 425: { items: 1.35 }, 768: { items: 2.4 }, 992: { items: 3.2 }, 1200: { items: 3.8 }, 1400: { items: 4.4 } } }); setButtonTextColor(); attachCardClickHandlers(); } catch (error) { console.error('Error rendering cards:', error); loadingElement.style.display = 'none'; errorElement.classList.remove('d-none'); } } // Card click handler function handleCardClick(cardId, universityName) { const toastHTML = ` `; document.body.insertAdjacentHTML('beforeend', toastHTML); const toastElement = document.querySelector('.toast:last-child'); const toast = new bootstrap.Toast(toastElement, { autohide: true, delay: 3000 }); toast.show(); toastElement.addEventListener('hidden.bs.toast', () => { toastElement.remove(); }); console.log('Card clicked:', { cardId, universityName }); } // Initialize app async function initCarousel(containerId) { try { const data = await loadEducationData(); renderCards(data, containerId); } catch (error) { console.error('Failed to initialize:', error); document.getElementById('loading').style.display = 'none'; document.getElementById('error').classList.remove('d-none'); } } // Start on DOM ready document.addEventListener('DOMContentLoaded', () => { initCarousel('cards-container'); // Pass container ID // Optional: hover effect document.addEventListener('mouseover', (e) => { if (e.target.matches('button[id$="-btn"]')) { e.target.style.background = 'rgba(255,255,255,0.3)'; e.target.style.transform = 'scale(1.05)'; } }); document.addEventListener('mouseout', (e) => { if (e.target.matches('button[id$="-btn"]')) { e.target.style.background = 'rgba(255,255,255,0.2)'; e.target.style.transform = 'scale(1)'; } }); }); document.addEventListener('click', (e) => { const card = e.target.closest('.uni-card'); if (card && card.dataset.url) { window.location.href = card.dataset.url; } }); function redirectCard(card) { const url = card.getAttribute('data-url'); if (url) { window.location.href = url; } } function attachCardClickHandlers() { document.querySelectorAll('.new-digi-card').forEach(card => { card.addEventListener('click', function (event) { const url = card.getAttribute('data-url'); if (url) { window.location.href = url; } }); }); } window.addEventListener("load", function () { const lazyImages = document.querySelectorAll("img.lazy-image"); const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { const img = entry.target; // const src = img.getAttribute("data-src"); const src = img.getAttribute("data-src")?.replace(/^src:/, "https:").replace(/["']/g, ""); if (src) { img.src = src; img.onload = () => { img.classList.add("loaded"); }; observer.unobserve(img); } } }); }, { rootMargin: "100px", threshold: 0.01 }); lazyImages.forEach(img => { observer.observe(img); }); setTimeout(() => { $('.owl-carousel').each(function () { //Find each set of dots in this carousel $(this).find('.owl-dot').each(function (index) { //Add one to index so it starts from 1 $(this).attr('aria-label', index + 1); }); }); }, 1500); });